Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Vypsání části článku - problém - php

Zdarec. Mám uložené články v DB, které mají třeba i tisíce znaků. Tyto články obsahují klasické html tagy, protože se články vytváří pomocí WYSIWYG CKEditor.

Chci ovšem vypsat z např. 12 000 znaků jen 1000. Jak to mám ale udělat tak, aby se mi to nezastavilo třeba u

<img src="obra
? Nebo jak to mám obecně udělat?

Takto vypadá můj skript, který mi ovšem nefunguje:
<?php 
	function html_cut($text, $limit) {
		$lenght = 0;
		$tags = array();
		for ($i = 0; $i < strlen($text) && $i < $limit; $i++) { 
			switch ($text[$i]) {

				case '<':
					$start = $i+1;
					while ($i < strlen($text) && $text[$i] != '>' && !ctype_space($text[$i])) {
						$i++;
					}
					$tag = substr($text, $start, $i-$start);

					$in_quote = '"';
					while ($i < strlen($text) && ($in_quote != '>' || $text[$i] != '>')) { #VŠE SE VYKONÁ ZDE
						if (($text[$i] == '"' || $text[$i] == "'") && !$in_quote) {
							$in_quote = $text[$i];
						}
						elseif ($in_quote == $text[$i]) {
							$in_quote = '"';
						}
						$i++; # když tu dám echo $i, tak se vypíšou všechna čísla 1 - počet znaků
					}
					if ($text[$start] == '/') {
						array_shift($tags);
					}
					elseif ($text[$i-1] != '/') {
						array_unshift($tags, $tag);
					}
					break;
				
				case '&':
					$lenght++;
					while ($i < strlen($text) && $text[$i] != ';') {
						$i++;
					}
					break;
				default:
					while ($i + 1 < strlen($text) && ord($text[$i+1]) > 127 && ord($text[$i+1]) < 192) {
						$i++;
					}
			}
		}
		$text = substr($text, 0, $i);
		if ($tags) {
			$text .= "</".implode("></", $tags).">";
		}
		return $text;
	} #řádek 50
?>
a další odkazující se:
$limit = 150;
							include "include/scripts/html_cut.php";
							$a = html_cut($text, $limit);
							echo $a;
PROBLÉMY:
- Vypisuje mi to chybu: Fatal error: Cannot redeclare html_cut() (previously declared in C:\xampp\htdocs\esport\include\scripts\html_cut.ph p:2) in C:\xampp\htdocs\esport\include\scripts\html_cut.ph p on line 50
- Nefunguje mi limit. Když dám limit třeba 50, i tak to přejde celý řetězec a u 50 znaků se nezastaví.

Po vykonání funkce má $i maximální hodnotu (tedy délka řetězce ve znacích + 1).
$lenght má hodnotu 0.
Vše se vykoná v cyklu while. (označen poznámkou), proč?
___________________

Jinak mě ještě napadlo, že by to šlo udělat normálně, že bych do sekce, kde se přidávají články, přidal ještě další textové pole, které by sloužilo pouze na psaní těchto krátkých ukázek, které by se tam poté vložily.

Za veškeré rady děkuji. A i kdybyste neměli řešení, tak bych rád aspoň zjistil, proč to nefunguje tak, jak chci. Děkuji

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny