პოსტები ტეგით “PHP”

STL: Simple Template Language Preview

დიდი ხნის პაუზის შემდეგ მინდა წარმოგიდგინოთ ერთი ახალი პროექტი რომელზეც გარკვეული პერიოდია ვმუშაობ. ჯერჯერობით ეს არის პრივიუ რელიზი რომელიც მალე საბოლოო ფაზაში შევა და სრულ დოკუმენტაციასა და მაგალითებს შესაბამისად წარმოგიდგენთ. მანამდე კი მისი ნახვა და გადმოწერა შეგიძლიათ შემდეგი მისამართიდან: STL Library.

რა არის STL? როგორც სათაურმა მიგანიშნათ ეს არის PHP – ზე დაწერილი მარტივი და მოქნილი შაბლონების ენა და ამ ენის პროცესორი. STL არის მარტივად გამოყენებადი შაბლონების ენა რომელიც არის საკმაოდ მარტივად ასათვისებელი თუ თქვენ გაგაჩნიათ ნებისმიერ მსგავს შაბლონების ენასთან სულ მცირედი მუშაობის გამოცდილებაც კი. მისი სინტაქსი წააგავს Django, Jinja2, Smarty და სხვა მსგავსი შაბნოლენბის ენებს.

ბიბლიოთეკას არ აქვს არანაირი დამოკიდებულება სხვა გარე ბიბლიოთეკებზე და PHP – ს სპეციფიურ მოდულებზე. კი არის სრულად ე.წ. standalone და მისი გამოყენება შეგიძლიათ ნებისმიერ PHP პროექტში. სრულად »

ტეგები: , , ,

PHP: Array Tricks Part 1

ამ პოსტს ჩემი ერთი მეგობრის თხოვნით ვწერ რომელთანაც გუშინ საუბარი მქონდა PHP – ს მასივებსა და for/foreach კონსტრუქციებთან მუშაობის შესახებ.

მასივები PHP – ს ერთერთი ყველაზე ძლიერი და განვითარებული მხარეა და შესაბამისად შეიცავს უამრავ ნიუანსს. ხშირ შემთხვევაში ასეთი ნიუანსები გამოუცდელი თუ გამოცდილი პროგრამისტების მიერ იგნორირებული რჩება და ამის შედეგად ვღებულობთ საკმაოდ დაუხვეწავ და სრულიად ზედმეტ კოდს.

ამ პოსტში მაქსიმალურად შევეცდები გადმოვცე ის დეტალები რაც PHP – სთან წლების მანძილზე მუშაობით შევიძინე და იმედი მაქვს რომ ეს ინფორმაცია თქვენთვისაც სასარგებლო იქნება. სრულად »

ტეგები:

PHP: Document Root for FTP Client?

ვებ სერვერზე PHP – თი ფაილებთან მუშაობა არაერთ სიურპრიზს გვთავაზობს, რაც ზოგჯერ საინტერესოა ზოგჯერ კი მართლა მოსაბეზრებელი :) თუმცა არის ერთი საკითხი რაზეც ამჯერად შევაჩერებ თქვენს ყურადღებას.

სერვერზე ფაილებთან მუშაობა PHP – ს შესაბამისი ფუნქციებით(fopen, fwrite, touch და ა.შ) საკმაოზე უფრო მოუხერხებელია უსაფრთხოების დეტალების გამო. არავისთვის არ წარმოადგენს საიდუმლოს რომ ვებ სერვერზე განთავსებულ ფაილებს უნდა გააჩნდეთ შექმნის, ჩაწერის, წაკითხვისა და წაშლის შეზღუდვები.

ასეთ შემთხვევაში ფაილებთან მუშაობის ერთადერთ სწორ და ეფექტურ გზად რჩება PHP FTP მოდულის გამოყენება, ან soeket – ებზე დაყრდნობით შექმნილი შესაბამისი რეალიზაციის გამოყენება, რაც ფაქტიურად ერთი და იგივეა. სრულად »

ტეგები:

Mac Os X XAMPP: Tidy – ს ინსტალაცია PHP-5.2.6 – სთვის

ამ პოსტში მინდა მოგითხროთ პატარა ისტორია Mac OS X – ზე PHP – ს რეკომპილაციით მიღებულ “სიამოვნებასა” და უსაზღვრო “კომფორტზე” რომელიც ბოლო ორი დღის განმავლობაში მივიღე.

მაშ ასე, თუ თქვენ იყენებთ XAMPP – ს და გესაჭიროებათ PHP – სთვის tidy გაფართოვების დამატება რომელიც სამწუხაროთ XAMPP – ს არ მოყვება, გაგახარებთ და გეტყვით რომ საკმაოდ სერიოზული პრობლემის წინაშე დგახართ :D სრულად »

ტეგები: , ,

PHP 5.3 alpha1 – ცვლილებები ენაში

მაშ ასე, ცხოვრება წინ მიიწევს და რა თქმა უნდა ტექნოლოგიებიც ვითარდება… აგვისტოს დასაწყისსში გამოჩნდა PHP – ს ახალი 5.3 ალფა ვერსია რომელშიც ენის უმნიშვნელოვანესი გაუმჯობესებებია შეტანილი. თუმცა ამ ფაქტის შესახებ დაწერა ვერ მოვასწარი… ჯერ ქალაქში არ ვიყავი, შემდეგ კი ყველასათვის ის ავადსახსენებელი მოვლენები დაიწყო…

თუმცა, მიუხედავად ყველაფრისა ცხოვრება გრძელდება და მეც ვცდილობ დავუბრუნდე ჩვეულ რითმს, რასაც ამ მცირე მიმოხილვით დავიწყებ :)

მიმდინარე წლის დასაწყისში ენდი გუტმანსმა გააკეთა გარკვეული პროგნოზები თუ როგორი იქნებოდა ტექნოლოგიუირი 2008 წელი

გარკვეული პერიოდის შემდეგ Google – ს თანამშროლმელმა და ajaxian.com – ის რედაქტორმა, Dion Almaer – მა, დაწერა საპასუხო პოსტი – Andi Gutmans Predicts – ენდის პროგნოზების შესახებ… რომლის ბოლო აბზაციც თავად PHP – განვითარებასა და მომავალს ეხება:

I wonder what 2008 will be like for PHP, Andi. I have no doubt that it will continue to power a huge number of websites. But, what is PHP doing in 2008 to increase its share in the non-hacker-kiddie crowd? Is the Zend Framework going to compete with Rails and the like? How is PHP going to evolve? I want to be able to do richer DSLs with full open classes and meta-support.

სრულად »

ტეგები:

PHP: nl2p(aragraph) vs nl2br

როგორ იქცევით ისეთ შემთხვევაში, როდესაც საჭიროა HTML textarea ელემენტიდან მიღებული ტექსტის, HTML დოკუმენტში უცვლელად გამობეჭვდაა საჭირო ანუ ტექსტის ფორმატირების გათვალისწინებით?

ამ შემთხვევაში, ტექსტის აბზაცებად ფორმატირებას ვგულისხმობ, სადაც აბზაცების გამოყოფად იგულისხმება ახალი სტრიქონის სიმბოლო.

მაგალითად ასეთი ტექსტი:

ეს არის ჩვეულებრივი აბზაცი.

ეს არის შემდეგი აბზაცი...

და კიდევ ერთი აბზაცი..

ამ შემთხვევაში ტექსტის გამოსაბეჭდად გამოვიყენე <pre> ტეგი, რომელიც ტექსტს ახალი სტრიქონის სიმბოლოების გათვალისწინებით ბეჭდავს და არ უკარგავს მას ფორმატირებას. თუმცა, <pre> სრულიად გამოუსადეგარია ბლოგ პოსტის ან ამ ბლოგის მომხმარებლების მიერ დაპოსტილი კომენტარების გამოსატანად.

PHP – ს გააჩნია ფუნქცია სახელად nl2br რომელსაც ყოველი ახალი სტრიქონის სიმბოლო გადაჰყავს <br /> ტეგში, თუმცა არც ეს არის დიდი ხეირი რადგან,
როგორც HTML სპეციფიკაცია გვეუბნება, აბზაცების ფორმატირებისათვის უნდა გამოვიყენოთ <p> ტეგი, თუმცა PHP – ს ასეთი ფუნქცია არ გააჩნია.

მარტივი რეგულარული გამოსახულების დახმარებით მივიღე ასეთი ფუნქცია, რომელიც აღწერილ პრობლემას მარტივად და სწრაფად აგვარებს:

1
2
3
function nl2p($input) {
    return preg_replace('~^\s*(.*?)\s*$~smx', '<p>$1</p>', $input);
}

თუ ამ ფუნქციას გამოვიყენებთ ზემოთ მოყვანილი ტექსტის დასამუშავებლად, მივიღებთ ასეთ შედეგს:

<p>ეს არის ჩვეულებრივი აბზაცი.</p>
<p>ეს არის შემდეგი აბზაცი...</p>
<p>და კიდევ ერთი აბზაცი..</p>

აღსანიშნავია რომ, ეს ფუნქცია იგნორირებას უკეთებს ერთმანეთის მიყოლებით აკრეფილ ახალი სტრიქონის სიმბოლოებს.

როგორ მუშაობს თავად რეგულარული გამოსახულება:

$regex = '~
    ^            # 1) შევამოწმოთ სტრიქონის დასაწყისი
    \s*          # 2) ნებისმიერი რაოდენობის უხილავი სიმბოლო
    (.*?)        # 3) ნებისმიერი რაოდენობის ნებისმიერი სიმბოლო
    \s*          # 4) ნებისმიერი რაოდენობის უხილავი სიმბოლო
    $            # 5) შევამოწმოთ სტრიქონის დასასრული
~smx'            # 6) smx - გამოსახულების მოდიფიკატორები

ბრჩხილებში მოქცეული გამოსახულების მესამე პუნქტის მეშვეობით ვინახავთ ჩვენთვის საჭირო ტექსტს, იმისათვის რომ მოგვიანებით შევძლოთ მისი გამოყენება, გამოსახულების დანარჩენი ნაწილი კი უბრალოდ ტექსტის შემოწმებისათვის არის საჭირო.

თავად გამოსახულებაზე უფრო საინტერესო მოცემულ შემთხვევაში არის, გამოყენებული რეგულარული გამოსახულების მოდიფიკატორები s და m.

. – წერტილი, რეგულარულ გამოსახულებაში ნიშნავს ნებისმიერ სიმბოლოს ახალი სტრიქონის სიმბოლოს გარდა. ხოლო s მოდიფიკატორი გამოსახულების ბოლოს წერტილს უცვლის მნიშვნელობას და იგი უკვე სხვა ნებისმიერ სიმბოლოსთან ერთად ახალი სტრიქონის სიმბოლოებსაც მოიცავს.

m მოდიფიკატორი თავის მხრივ ცვლის ტექსტის დასაწყისისა(^) და ტექსტის დასასრულის($) სიმბოლოების ქცევას. რაც ნიშნავს იმას, რომ, ეს სიმბოლოები მიუთითებენ არა მთლიანი ტექსტის დასაწყისსა და დასასრულს არამედ ახალი ხაზის სიმბოლოთი გამოყოფილ სტრიქონის დასაწყისსა და დასასრულს.

გამოსახულებაში ასევე მნიშვნელოვანია მეორე და მეოთხე პუნქტები. გამოსახულება უბრალოდ აღნიშნავს ნებისმიერი რაოდენობის უხილავ სიმბოლოს(უხილავ სიმბოლოებს განეკუთვნება ახალი სტრიქონის სიმბოლოც). გამოსახულების ეს ნაწილია საჭიროა იმისათვის რომ ტექსტში არსებულ ერთზე მეტ ახალი სტრიქონის სიმბოლოებს გავუკეთოთ იგნორეირება რათა არ მივიღოთ ცარიელი <p>p</p> ტეგების კომბინაცია.

სულ ეს არის და ეს :)

ტეგები: ,