Autor Zpráva
Ice
Profil
Ahoj, mám třeba tento kus kodu

<p class="ad_item">Telefon: <strong>721181920</strong></p>
<p class="ad_item"><span class="bracket">[<a href="mailto:iva@centrum.cz">e-mail</a>]</span></p>
<p class="ad_item">region: <strong>Praha 5</strong></p>

<p class="ad_item">Telefon: <strong>721181920</strong></p>
<p class="ad_item"><span class="bracket">[<a href="mailto:idfva@centrum.cz">e-mail</a>]</span></p>
<p class="ad_item">region: <strong>Praha 5</strong></p>

a potřebuji z něho jen email získat. Nemáte tip na nějaký soft, který dokáže určitou část najít a označit tuto část. Těch záznamů je na 1000 a samo že jsou různé a manuálně to dělat... Díky.
DJ Miky
Profil
Tak jsem něco zkusil v PHP:

<?php

$text=file_get_contents('soubor.txt'); // soubor, ve kterem to mas ulozene

function hledat() {
global $text;
$pos=strpos($text,'mailto:');
if($pos!==false) {
$text=substr($text,$pos+7);
$pos2=strpos($text,'"');
if($pos2!==false) {
echo substr($text,0,$pos2)."\n";
hledat();
}
}
}

hledat();
?>


Nezkoušel jsem, nezaručuju funkčnost.
Ice
Profil
DJ Miky
Funguje to úplně super. Díky.
Kamahl
Profil *
Tak tohle přesně bych dělal jedině v xml, pak bys to měl snadný, jestli máš možnost to nějak jednoduše konvertovat...
nightfish
Profil
a nebo řešení pomocí regulárního výrazu
$data = file("soubor.txt");

foreach ($data as $value) {
if (ereg("<span class=\"bracket\">[<a href=\"mailto:([a-zA-Z0-9\.@-_]+)\">e-mail", $value, $regs)) {
echo $regs[1]."<br />";
}
}
Ice
Profil
DJ Miky
nightfish
Vám obou moc díky, bohužel o php moc toho nevim. Mohl bych vás případně poprosit ještě o to, že některé adresy se tam opakuji. Tak aby zustatala pouze jedna?
nightfish
Profil
$data = file("soubor.txt");

$email = array();
foreach ($data as $value) {
if (ereg("<span class="bracket">[<a href="mailto:([a-zA-Z0-9.@-_]+)">e-mail", $value, $regs)) {
$email[] = $regs[1];
}
}
$email = array_unique($email);
foreach ($email as $value) echo $value."<br>";
Ice
Profil
nightfish
Háže mně to bohužel tuto chybu

Parse error: syntax error, unexpected T_STRING in /var/www/web6/naweb.cz/tst9.naweb.cz/test.php on line 9
Joker
Profil
Ice
A na řádku 9 je co?

edit: Jo a samozřejmě klasika: Nechybí na řádku 8 středník?
Ice
Profil
if (ereg("<span class="bracket">[<a href="mailto:([a-zA-Z0-9.@-_]+)">e-mail", $value, $regs)) {
Joker
Profil
Ice
Aha, tak to je uvozovkama. Tohle by mělo být OK:
if (ereg('<span class="bracket">[<a href="mailto:([a-zA-Z0-9.@-_]+)">e-mail', $value, $regs)) {
koudi
Profil
Ice
Nejsou oescapovaný vnitřní uvozovky.
Joker
Profil
Ne, asi to ještě OK nebude. Asi bude potřeba escapovat některé znaky v tom regulárním výrazu:
if (ereg('<span class="bracket">[<a href="mailto:([a-zA-Z0-9.@-_]+)">e-mail', $value, $regs)) {

Ale já osobně bych to zjednodušil a vybíral všechny odkazy na mailto:něco:
if (ereg('[<a href="mailto:([a-zA-Z0-9.@-_]+)"', $value, $regs)) {

Nevyzkoušeno, může tam být nějaká chybka
Joker
Profil
Hm, koukám, že se mi z toho příspěvku odstranila zpětná lomítka :-/

Tak jinak:
if (ereg('<span class=*"bracket*">*[<a href=*"mailto:([a-zA-Z0-9.@-_]+)*">e-mail', $value, $regs)) {

respektive:
if (ereg('<a href=*"mailto:([a-zA-Z0-9.@-_]+)*"', $value, $regs)) {

Tam kde jsem udělal hvězdičky patří zpětné lomítko.
Ice
Profil
POrad se tomu nechce

nightfish

uz ten jeho prvni naznak nechtel jet chyba na 9 radku, Od Mikiho to jelo bez problému
Ice
Profil
Joker
respektive:
if (ereg('<a href=*"mailto:([a-zA-Z0-9.@-_]+)*"', $value, $regs)) { tahle varianta uz jede . Tak diky vsem.
nightfish
Profil
zapomněl jsem, že diskuse požírá zpětná lomítka, pokud nejsou správně oescapována
takže si vem ten můj první příspěvek a doplň změny podle druhého a bude to fungovat

jinak tip:
a) chcete-li napsat \, do příspěvku napište \\
b) chcete-li napsat \", do příspěvku napište \\\"
Joker
Profil
zapomněl jsem, že diskuse požírá zpětná lomítka
Hehe, stejný problém.
A předpokládám, že při editaci příspěvku je potřeba všechna zpětná lomítka zase zdvojit.
nightfish
Profil
Joker
jj, přesně tak
Toto téma je uzamčeno. Odpověď nelze zaslat.