Autor Zpráva
unlucky
Profil
$text='neco neco /chci tohle/';
preg_match("~[/](.+?)[/]~", $text,$vyslovnost);
      if(!isset($vyslovnost)){
        $vyslov='nema';
      }else{
        $vyslov=$vyslovnost[1];
        $text=strstr($text, '/', true);
      }
echo $text.$vyslov;

Kdyz v textu nenajde vyslovnost, napise mi to upozorneni offset. Zkousel jsem podminky, jestli je prazdny retezec a empty, ale porad zobrazuje chybu. Vite jak to opravit?
Virtus
Profil
V tomhle kódu žádnou chybu nevidím, jedině snad aby to bylo striktní, tak si prvně nadefinovat proměnnou $vysledek
$text='neco neco /chci tohle/';
$vysledek = array();
preg_match( '~[/](.+?)[/]~', $text, $vysledek );
if( isset( $vysledek[1] ) ){
  echo 'ok';
}else{
  echo 'chyba';
}
Je možné, že pokud používáš nějakou starší verzi php, že mu to třeba vadí, ale jinak mně nic nenapadá, chyba pravděpodobně bude jinde. Třeba někde dál v kódu se ještě snažíš použít danou proměnnou $vysledek[1], napiš sem celý znění chybové hlášky a kód kolem řádku u kterého ti to hlasí tu chybu.
unlucky
Profil
Notice: Undefined offset: 1 in C:\Program Files\EasyPHP-12.0\www\index.php on line 21

radek 21 je $vyslov=$vyslovnost[1];

ale toto nemuze byt, kdyz uz to proslo kontrolou? zkousel jsem array() a unset, porad stejne
Tori
Profil
unlucky:
preg_match vrací false, když nenajde požadované, takže se dá použít if (!preg_match(.... IMHO by stačilo i:
$text = 'slovo /vyslovnost/';
$tmp = explode('/', $text);
echo 'Slovo: '.$tmp[0];
echo ', výslovnost: '. (isset($tmp[1]) ? $tmp[1] : 'nezadaná');
anebo se stejným výsledkem jako v [#1] i: echo $text . (strpos($text, '/') === FALSE ? ' výslovnost není zadaná' : '');

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: