Beste SD'ers,
Ik ben op zoek naar iemand die voor mij een klein script kan schrijven waarmee ik van een pagina waar contact gegevens op staan, de e-mails als volgt in een bestand kan krijgen, bijvoorbeeld html/txt:
email@site.nl,email@site.nl,email@site.nl,email@si te.nl,email@site.nl,email@site.nl
Kan je dit realiseren? Neem dan contact met mij op.
Het budget wat ik hiervoor heb is 20 euro.
- Gezocht: script kopieren e-mails van site
-
1132 × bekeken sinds 25-08-2011, 02:58 #1
Gezocht: script kopieren e-mails van site
-
-
25-08-2011, 08:21 #2
- Berichten
- 92
- Lid sinds
- 14 Jaar
Re: Gezocht: script kopieren e-mails van site
Zoiets? :
PHP Code:$string = file_get_contents("http://nl.wikipedia.org/wiki/E-mail");
preg_match_all('/[^a-zA-Z0-9\.]+?([a-zA-Z0-9\.]+@[a-zA-Z0-9\.-]+)[^a-zA-Z0-9\.]/si',$string,$emails);
// Bestand wegschrijven
$filename = 'emails.txt';
$fh = fopen($filename, 'w');
fwrite($fh, implode(",",$emails[1]));
fclose($fh);
print_r($emails[1]);
-
25-08-2011, 08:25 #3
- Berichten
- 11
- Lid sinds
- 15 Jaar
Re: Gezocht: script kopieren e-mails van site
Ik kan zoiets wel maken in ruby voor je. Maar je zoekt waarschijnlijk php..
-
25-08-2011, 10:50 #4
- Berichten
- 144
- Lid sinds
- 15 Jaar
Re: Gezocht: script kopieren e-mails van site
Zoiets? :
PHP Code:$string = file_get_contents("http://nl.wikipedia.org/wiki/E-mail");
preg_match_all('/[^a-zA-Z0-9\.]+?([a-zA-Z0-9\.]+@[a-zA-Z0-9\.-]+)[^a-zA-Z0-9\.]/si',$string,$emails);
// Bestand wegschrijven
$filename = 'emails.txt';
$fh = fopen($filename, 'w');
fwrite($fh, implode(",",$emails[1]));
fclose($fh);
print_r($emails[1]);
-
25-08-2011, 11:03 #5
- Berichten
- 2.202
- Lid sinds
- 16 Jaar
Re: Gezocht: script kopieren e-mails van site
emails.txt moet je chmodden naar 777
-
25-08-2011, 11:20 #6
- Berichten
- 92
- Lid sinds
- 14 Jaar
Re: Gezocht: script kopieren e-mails van site
Je kunt hiervoor de array_unique() functie gebruiken
PHP Code:$emails[1] = array_unique($emails[1]);
+ " [2] =>" er tussen is omdat onderaan het script de huidige array geprint wordt.
Je kunt hier
echo implode(",",$emails[1]); van maken om de lijst ook in de browser te zien.
Het wegschrijven van het txt bestand heeft waarschijnlijk met schrijfrechten in de huidige map te maken.
-
26-08-2011, 00:41 #7
- Berichten
- 144
- Lid sinds
- 15 Jaar
Re: Gezocht: script kopieren e-mails van site
2 keer komt waarschijnlijk doordat er op de pagina zelf een link staat à la <a href="mailto:adres">adres</a>
Je kunt hiervoor de array_unique() functie gebruiken
PHP Code:$emails[1] = array_unique($emails[1]);
+ " [2] =>" er tussen is omdat onderaan het script de huidige array geprint wordt.
Je kunt hier
echo implode(",",$emails[1]); van maken om de lijst ook in de browser te zien.
Het wegschrijven van het txt bestand heeft waarschijnlijk met schrijfrechten in de huidige map te maken.
Warning: fopen(******/emails.txt) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections in ******/mail.php on line 7
Warning: fwrite(): supplied argument is not a valid stream resource in ******/mail.php on line 8
Warning: fclose(): supplied argument is not a valid stream resource in ******/mail.php on line 10
-
26-08-2011, 09:08 #8
- Berichten
- 92
- Lid sinds
- 14 Jaar
Re: Gezocht: script kopieren e-mails van site
Een simpele google search had het antwoord al gegeven, je probeert het emails.txt bestand over het http protocol weg te schrijven ( waarschijnlijk heb je het dus veranderd naar http://jehost.nl/emails.txt ).
Dit kan echter niet. Je zult het óf in de root map moeten wegschrijven, óf in een submap, óf het bestand via een absoluut pad wegschrijven.
Je moet in ieder geval géén http://... in je $filename = ... gebruiken
-
26-08-2011, 16:39 #9
- Berichten
- 144
- Lid sinds
- 15 Jaar
Re: Gezocht: script kopieren e-mails van site
Een simpele google search had het antwoord al gegeven, je probeert het emails.txt bestand over het http protocol weg te schrijven ( waarschijnlijk heb je het dus veranderd naar http://jehost.nl/emails.txt ).
Dit kan echter niet. Je zult het óf in de root map moeten wegschrijven, óf in een submap, óf het bestand via een absoluut pad wegschrijven.
Je moet in ieder geval géén http://... in je $filename = ... gebruiken
Gesteld dat ik van een site met meerdere pagina's de mails in 1 lijst wil krijgen klopt het dan dat ik het "&" teken gebruik? Dit werkt namelijk enkel voor 2 pagina's.
Voorbeeld:
http://site.nl/index.php?nav=rubriek...3&pagenumber=2
-
26-08-2011, 17:13 #10
- Berichten
- 92
- Lid sinds
- 14 Jaar
Re: Gezocht: script kopieren e-mails van site
Je zou in plaats van " $fh = fopen($filename, 'w');"
het volgende kunnen gebruiken: $fh = fopen($filename, 'a');
Je veranderd dan de url, en het script zal de emails achter de reeds in het bestand(emails.txt) aanwezige emails plaatsen.
Let er wel even op dat aan het eind van het bestand dan waarschijnlijk eerst een nieuwe comma geplaats moet worden.
-
26-08-2011, 17:36 #11
- Berichten
- 144
- Lid sinds
- 15 Jaar
Re: Gezocht: script kopieren e-mails van site
Beste Rick,
Het schrijven van de andere pagina's in het zelfde bestand gaat goed op 1 klein puntje na: in de browser laat ie de emails zien zonder deze te dupliceren, in het bestand gebeurt dit wel.
Dit is de code zoals ik 'm nu heb:
PHP Code:<?php
$string = file_get_contents("http://sitemetmails.nl/index.php?nav=rubrieken&hcid=6&scid=29&pagenumber=16");
preg_match_all('/[^a-zA-Z0-9\.]+?([a-zA-Z0-9\.]+@[a-zA-Z0-9\.-]+)[^a-zA-Z0-9\.]/si',$string,$emails);
// Bestand wegschrijven
$filename = '/home/bnontwerp/domains/site.nl/public_html/dev/emails.txt';
$fh = fopen($filename, 'a');
fwrite($fh, implode(",",$emails[1]));
$emails[1] = array_unique($emails[1]);
echo implode(",",$emails[1]);
?>
-
26-08-2011, 22:28 #12
- Berichten
- 2.202
- Lid sinds
- 16 Jaar
Re: Gezocht: script kopieren e-mails van site
Dit gedeelte mag weg:
/home/bnontwerp/domains/site.nl/public_html/dev/
en zorg dat je emails.txt hebt gechmod
-
28-08-2011, 22:51 #13
- Berichten
- 316
- Lid sinds
- 17 Jaar
Re: Gezocht: script kopieren e-mails van site
Ik heb wat gevonden op google, dus deel ik het even met jullie. Het werkt prima.
PHP Code:<?php
$the_url = isset($_REQUEST['url']) ? htmlspecialchars($_REQUEST['url']) : '';
?>
<form method="post">
Please enter full URL of the page to parse (including http://):<br />
<input type="text" name="url" size="65" value="<?php echo $the_url; ?>"/><br />
or enter text directly into textarea below:<br />
<textarea name="text" cols="50" rows="15"></textarea>
<br />
<input type="submit" value="Parse Emails" />
</form>
<?php
if (isset($_REQUEST['url']) && !empty($_REQUEST['url'])) {
// fetch data from specified url
$text = file_get_contents($_REQUEST['url']);
}
elseif (isset($_REQUEST['text']) && !empty($_REQUEST['text'])) {
// get text from text area
$text = $_REQUEST['text'];
}
// parse emails
if (!empty($text)) {
$res = preg_match_all(
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",
$text,
$matches
);
if ($res) {
foreach(array_unique($matches[0]) as $email) {
echo $email . "<br />";
}
}
else {
echo "No emails found.";
}
}
?>Laatst aangepast door LéonH : 28-08-2011 om 23:32
-
02-09-2011, 11:24 #14
- Berichten
- 92
- Lid sinds
- 14 Jaar
Re: Gezocht: script kopieren e-mails van site
Op deze manier haalt hij eerst de emails uit het bestand, om ze dan later samen te voegen met de nieuwe mails, dubbelen er uit te halen en weer in het bestand weg te schrijven.
Je zult nog wel even moeten kijken naar de gebruikte regex (/[^a-zA-Z0-9\.]+?([a-zA-Z0-9\.]+@[a-zA-Z0-9\.-]+)[^a-zA-Z0-9\.]/si) aangezien deze niet alle emails matched.
Denk daarbij aan adressen die ook éá etc etc gebruiken, deze worden namelijk niet gevonden op deze manier. Er kunnen namelijk nogal vreemde tekens in email-adressen zitten
PHP Code:<?php
$string = file_get_contents("http://sitemetmails.nl/index.php?nav=rubrieken&hcid=6&scid=29&pagenumber=16");
preg_match_all('/[^a-zA-Z0-9\.]+?([a-zA-Z0-9\.]+@[a-zA-Z0-9\.-]+)[^a-zA-Z0-9\.]/si',$string,$emails);
// Bestand wegschrijven
$filename = '/home/bnontwerp/domains/site.nl/public_html/dev/emails.txt';
$current_emails = (file_exists($filename) ? (file_get_contents($filename) != '' ? explode(",",file_get_contents($filename)) : array()) : array());
$fh = fopen($filename, 'w+');
$allemails = array_merge($current_emails,$emails[1]);
$allemails = array_unique($allemails);
fwrite($fh, implode(",",$allemails));
echo implode(",",$allemails);
?>
Dit is mét een redelijk oké regex
PHP Code:<?php
$string = file_get_contents("http://sitemetmails.nl/index.php?nav=rubrieken&hcid=6&scid=29&pagenumber=16");
preg_match_all('/([A-Za-z0-9\x5c\x00-\x20\x7f-\xff\.\-\_\!\#\$\%\&\'\*\+\/\=\?\^\`\{\|\}]+)\@([A-Za-z0-9.-_]+)(\.[A-Za-z]{2,5})/si',$string,$emails);
$filename = '/home/bnontwerp/domains/site.nl/public_html/dev/emails.txt';
// Bestand ophalen, huidige lijst met adressen
$current_emails = (file_exists($filename) ? (file_get_contents($filename) != '' ? explode(",",file_get_contents($filename)) : array()) : array());
// Samenvoegen en dubbelen er uit halen
$allemails = array_merge($current_emails,$emails[0]);
$allemails = array_unique($allemails);
// Bestand wegschrijven
$fh = fopen($filename, 'w+');
fwrite($fh, implode(",",$allemails));
echo implode(",",$allemails);
?>Laatst aangepast door rickv : 02-09-2011 om 11:36 Reden: Automatisch samengevoegd.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic