#php #html
#php #HTML
Вопрос:
Как удалить (в данном случае бесполезный) переносящий абзац в случаях, подобных этому:
<p>Only paragraph</p>
Но сохранить строку такой, какая она есть, когда задействовано более одного абзаца:
<p>Paragraph 1</p>
<p>Paragraph 2</p>
preg_replace, вероятно, сработал бы здесь, но только если вы можете обрабатывать регулярные выражения.. :/
Комментарии:
1. Я думаю, вы просто избегаете другой проблемы с этим вопросом. Вам следует переработать свой CSS, чтобы он работал в любом случае.
2. A
<p>
никогда не бывает устаревшим или бесполезным. Он определяет текстовый абзац, и это то, что у вас там есть. Даже если это единственный, это все равно это абзац!3. Он устарел, и это не вопрос CSS, поскольку строка будет введена в элемент контейнера, который может быть любым от h2 до div и всем, что между ними. Мне действительно не нужны теги абзаца внутри элемента заголовка, иначе. они устарели.
4. crappish: Почему вы согласны с двумя абзацами в <h2> , но не с одним? Вы противоречите сами себе.
5. Потому что эти тексты с несколькими абзацами не будут находиться в заголовках. Можем ли мы, пожалуйста, вернуться к проблеме?
Ответ №1:
Вот один из способов, 2 тестовых примера, $ a и $ b
$a = '<p>Only paragraph</p>';
$b = '<p>Only paragraph</p>
<p>Only paragraph</p>
<p>Only paragraph</p>';
// change the values to $a and then $b
if( count( explode('<p>', $a) ) == 2 ){
$c = preg_replace('#</?p>#', '', $a);
}
if( isset( $c)) {
var_dump( $c );
}
// 'Only paragraph'
Возможно, вам также потребуется сначала добавить trim().
Не учитывает искаженный ввод, например
<p>para1 </p> para 2</p>
Комментарии:
1. Это работает. 🙂 Но предпочел бы видеть preg_replace, поскольку регулярные выражения, когда все сделано правильно, являются вполне бомбоубежищным решением. 🙂