|
Posted by "Shaun" on 12/04/05 23:37
"Curt Zirzow" <czirzow@gmail.com> wrote in message
news:20051204193110.GF5243@bagend.shire...
> On Sun, Dec 04, 2005 at 07:00:00PM -0000, Shaun wrote:
>>
>> "comex" <comexk@gmail.com> wrote in message
>> news:6bf32280512040808s16253e33r6cf972cec52c5a58@mail.gmail.com...
>> > form'.$count.'...
>> You can use preg_replace_callback or the e pattern modifier to let you
>> run php code for the replacement:
>> http://us3.php.net/manual/en/function.preg-replace-callback.php
>> http://us3.php.net/manual/en/reference.pcre.pattern.modifiers.php
>>
>> Hi Comex,
>>
>> Thanks for your reply, I have modified the code so I have a call back
>> function:
>>
>> echo = preg_replace_callback( '/<p[^>]*>(.*?)<\/p>/ms', "callback",
>> file_get_contents($_GET['file']) );
>>
>> function callback($matches){
>> return
>> '<form name="form" target="_parent"
>> ...
>>
>> But I still can't see how I can increment a value in each return string?
>
> function callback($matches) {
> static $i = 0; // <-- maintains counter within function scope
> $i++;
>
> return "<form name="form$i">....</form>";
> }
>
> btw, i've been meaning to mention this in the last few posts of
> yours, but have you considered using DOM to make this happen. When
> ever I see a regex solution for parsing an html document, it makes
> me cringe.
>
> Curt.
> --
> cat .signature: No such file or directory
Hi Curt,
Thanks for your reply. So basically I do something like:
$doc = new DOMDocument();
$doc->loadHTML($file);
$p = $doc->getElementsByTagName('p');
How would then wrap the following around each <p> tag:
<form name="form" target="_parent"
action="/index.php?action=edit_paragraph&file='.$_GET['file'].'"
method="post">
<input type="hidden" name="old_html"
value="'.htmlentities($matches[0]).'">
<p><a href="javascript:;"
onclick="document.form.submit();">'.$matches[1].'</a></p>
</form>
BTW if its not obvious I am trying to create a CMS that lets users edit
anything within a <p> tag!
[Back to original message]
|