Chcę wyświetlić pierwsze 110 znaków pozycji bazy danych. Jak dotąd dość łatwe:
<?php echo substr($row_get_Business['business_description'],0,110) . "..."; ?>
Ale powyższy wpis zawiera kod HTML, który został wprowadzony przez klienta. Więc wyświetla:
<p class="Body1"><strong><span style="text-decoration: underline;">Ref no:</span></strong> 30001<strong></stro...
Oczywiście nic dobrego.
Chcę po prostu usunąć cały kod html, więc muszę usunąć wszystko między <i> z wpisu db, a następnie wyświetlić pierwsze 100 znaków.
Jakieś pomysły?
Odpowiedzi:
posługiwać się
strip_tags
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; echo strip_tags($text); //output Test paragraph. Other text <?php echo substr(strip_tags($row_get_Business['business_description']),0,110) . "..."; ?>
źródło
htmlentities
i wtedystrip_tags
? To całkowicie mija się z celem.Użyj funkcji strip_tags () PHP .
Na przykład:
$businessDesc = strip_tags($row_get_Business['business_description']); $businessDesc = substr($businessDesc, 0, 110); print($businessDesc);
źródło
Usuń wszystkie tagi HTML z łańcucha PHP z zawartością!
Powiedzmy, że masz ciąg zawierający tag kotwicy i chcesz usunąć ten tag z zawartością, ta metoda będzie pomocna.
$srting = '<a title="" href="https://stackoverflow.com/index.html"><b>Some Text</b></a> Lorem Ipsum is simply dummy text of the printing and typesetting industry.'; echo strip_tags_content($srting); function strip_tags_content($text) { return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text); }
Wynik:
źródło
</script >
jest prawidłowym znacznikiem końcowym, ale nie jest obsługiwana przez wyrażenie regularne. Powinien być</\1\s*>
lub coś takiego.użyj tego wyrażenia regularnego:
/<[^<]+?>/g
$val = preg_replace('/<[^<]+?>/g', ' ', $row_get_Business['business_description']); $businessDesc = substr(val,0,110);
z twojego przykładu powinno pozostać:
Ref no: 30001
źródło
<br />
lub<special />
. Myślę też, że to nie bierze<b<b>></</b>>
pod uwagę hacków .strip_tags
Dla mnie to najlepsze rozwiązanie.
function strip_tags_content($string) { // ----- remove HTML TAGs ----- $string = preg_replace ('/<[^>]*>/', ' ', $string); // ----- remove control characters ----- $string = str_replace("\r", '', $string); $string = str_replace("\n", ' ', $string); $string = str_replace("\t", ' ', $string); // ----- remove multiple spaces ----- $string = trim(preg_replace('/ {2,}/', ' ', $string)); return $string; }
źródło
W laravel możesz użyć następującej składni
@php $description='<p>Rolling coverage</p><ul><li><a href="http://xys.com">Brexit deal: May admits she would have </a><br></li></ul></p>' @endphp {{ strip_tags($description)}}
źródło
<?php $data = "<div><p>Welcome to my PHP class, we are glad you are here</p></div>"; echo strip_tags($data); ?>
Lub jeśli masz treść pochodzącą z bazy danych;
<?php $data = strip_tags($get_row['description']); ?>
<?=substr($data, 0, 100) ?><?php if(strlen($data) > 100) { ?>...<?php } ?>
źródło
$string = <p>Awesome</p><b> Website</b><i> by Narayan</i>. Thanks for visiting enter code here; $tags = array("p", "i"); echo preg_replace('#<(' . implode( '|', $tags) . ')(?:[^>]+)?>.*?</\1>#s', '', $string);
Spróbuj tego
źródło