Середина строки HTML, рассматриваемая как текст, после/перед ближайшим предложением.Вставить текст в середине строки HTML
Пример:
$str = 'First sentence. Second sentence! <a title="Hello. World">
Third sentence. </a> Fourth sentence. Fifth sentence?';
$middle = strlen($str)/2;
, что я сделал это, чтобы добавить ключевое слово, чтобы все остановятся символы, такие как .
, !
или ?
, но только те, за пределами HTML-теги:
$str = 'First sentence. Second sentence! <a title="Hello. World">
Third sentence. </a> Fourth sentence. Fifth sentence?';
$str = preg_replace_callback("/(\.|\?|\!)(?!([^<]+)?>)/i", function($matches){
return $matches[1].'<!-- stop -->';
}, $str);
Это превращает $ str in:
First sentence.<!-- stop --> Second sentence!<!-- stop --> <a title="Hello.
World"> Third sentence.<!-- stop --> </a> Fourth sentence.<!-- stop --> Fifth
sentence?<!-- stop -->
Теперь, как можно Я нахожу подстроку <!-- stop -->
, ближайшую к позиции $middle
, и вставляем мой текст перед этим?
Есть ли способ найти позицию $matches[1]
внутри моего обратного вызова preg_replace относительно всей строки? Таким образом, я мог бы просто сравнить это с $ middle