PHP / HTML текстовая область регулярное выражение (регулярное выражение) - PullRequest
1 голос
/ 16 февраля 2012

Фон

В Wordpress есть функция под названием wpautop . Добавляет абзацы br-теги автоматически при выводе.

Задача

У меня есть текстовая область внутри строки $ content , и я не хочу автоматического форматирования внутри этой текстовой области. Может быть несколько текстовых областей в строке.

Пример строки - перед wpautop

This is my text. My paragraph.
<textarea class="test">
    &lt;html&gt;Code test&lt;/html&gt;
</textarea>

Пример строки - после wpautop

<p>This is my text. My paragraph</p>
<textarea class="test">
    <br />
    &lt;html&gt;Code test&lt;/html&gt;<br />
</textarea>

Возможные решения

  1. Каким-то образом создайте массив со всеми текстовыми областями в строке. Запустите wpautop и вставьте их снова в строку.
  2. Не используйте wpautop. Вместо этого используйте новое регулярное выражение.

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Проверьте это было бы очень полезно

    $textareas = '<textarea>
                    <html>Code test1</html>
                   </textarea>
                   <textarea class="test1">
                   <html>Code test2</html>
                   </textarea>
                   <textarea class="test3">
                   <html>Code test3</html>
                   </textarea>
                   <textarea class="test4">
                   <html>Code test4</html>
                   </textarea>';
error_reporting(E_ERROR|E_PARSE);
$dom = new DOMDocument();
$dom->loadHTML($textareas);

$xml  = simplexml_import_dom($dom);
$data  = $xml->xpath('//textarea');
foreach($data as $key=>$value):
    echo $data[$key][$key+1]."<br/>";
endforeach;
1 голос
/ 16 февраля 2012
$splited=preg_split('#<textarea.*?</textarea>#s', $text, PREG_SPLIT_DELIM_CAPTURE);

for ($i=0; $i<count($splited); $i+=2)
     $splited[$i]=wpatoup($splited[$i]);

echo implode('', $splited);
  1. Сплит строка, где текстовые области.
  2. Теперь вы знаете, что каждый второй элемент не является текстовой областью. Примените к нему wpatoup ().
  3. Присоединяйтесь снова.
...